#把这个目录下的文件编译为库文件.a

# the c source files are in  the parent fold
# 如果把注释写在赋值语句后面，注意"空格"！，会导致路径出错！
# ":="和"="的差别是，前者必须先定义后使用，避免了嵌套定义
outfold := ../

sources := $(wildcard $(outfold)*.c)
sources := $(notdir $(sources))

#如果没有上面的处理，此时并不能保证main在第一项
objs := $(sources:.c=.o)

CC = gcc

INCLUDE = .

CFLAGS = -g -Wall

#-----------------------------------------------
# 如果不需要生成一个可执行文件，也需要all
# 用all 来建立整个依赖！
# 如果没有以下一句，那么 %.o:%.c 只会去应用到第一个依赖规则上！
all : $(objs)

%.d: $(outfold)%.c
	@set -e;rm -f $@;\
	$(CC) -MM $(CFLAGS) $< > $@.$$$$; \
	sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
	rm -f $@.$$$$
include $(objs:.o=.d)

%.o : $(outfold)%.c
	$(CC) -I$(INCLUDE) $(CFLAGS) -c $< -o $@

PHNOY:all clean print

clean:
	@echo "start clean the project..."
	-rm -rf main *.o *.d
	@echo "clean finished!"

print:
#@echo $(findstring main.c,$(sources))
	@echo $(sources)
	@echo $(objs)
	@echo $(objs:.o=.d)
#@echo $(objs:.o=.d)
